package com.wang.jmonkey.modules.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.wang.jmonkey.common.result.ServiceResult;
import com.wang.jmonkey.modules.system.model.dto.SystemUserDto;
import com.wang.jmonkey.modules.system.model.entity.SystemUserEntity;
import com.wang.jmonkey.modules.system.model.param.SystemUserParam;
import com.wang.jmonkey.modules.system.model.param.SystemUserPasswordParam;
import com.wang.jmonkey.modules.system.model.query.SystemUserQuery;

import java.util.List;

/**
 * (SystemUser)表服务接口
 *
 * @author HeJiawang
 * @since 2021-05-10 10:52:14
 */
public interface SystemUserService extends IService<SystemUserEntity> {

    /**
     * 分页查询用户信息
     * @param query query
     * @return PageInfo
     */
    PageInfo<SystemUserDto> page(SystemUserQuery query);

    /**
     * 保存用户信息
     * @param user 用户信息
     * @return true 保存成功
     */
    boolean save(SystemUserParam user);

    /**
     * 修改用户信息
     * @param user 用户信息
     * @return true 修改成功
     */
    boolean updateById(SystemUserParam user);

    /**
     * 校验用户登陆名称是否重复
     * @param userParam 用户登陆名称、用户id
     * @return true 用户登陆名称重复
     */
    boolean checkUsername(SystemUserParam userParam);

    /**
     * 批次删除用户
     * @param userIdList 用户id集合
     * @return true 删除成功
     */
    boolean removeBatch(List<Long> userIdList);

    /**
     * 修改用户密码
     * @param passwordParam 用户密码信息
     * @return true 修改成功
     */
    ServiceResult<Boolean> modifyPassword(SystemUserPasswordParam passwordParam);

    /**
     * 锁定用户
     * @param id 用户id
     * @return true 锁定成功
     */
    boolean lock(Long id);

    /**
     * 解锁用户
     * @param id 用户id
     * @return true 解锁成功
     */
    boolean unLock(Long id);

    /**
     * 查看详情
     * @param id 用户id
     * @return 用户信息
     */
    SystemUserDto getDtoById(Long id);
}
